Active corridor and shared use mobility hub supporting information
Author
C. Scott Smith, PhD AICP (Instructor)
Published
January 20, 2024
Purpose
This document provides links to data and documents that may help inform course group projects.
Traffic Volumes
Annual Average Daily Traffic (AADT) is a measure of the amount of traffic on a given road or highway. It is calculated by taking the total number of vehicles that travel along a road or highway during a 24-hour period, and then dividing that number by 365 to get an average. AADT can be used to measure the amount of traffic on a road or highway over a long period of time and is a key indicator of road usage. There are a number of sources of traffic count information available to the public. Many are listed on the Chicago Metropolitan Association of Governments traffic data web page. Perhaps most useful for your group projects is the IDOT Statewide interactive Annual Average Daily Traffic Map. Enter a location or zoom in on map to see AADTs for most roadways in the state.
Traffic Crashes
The Chicago Data Portal has extensive and up-to-date crash data showing information about each traffic crash on city streets within the City of Chicago limits and under the jurisdiction of Chicago Police Department (CPD). According to the data portal, data are shown as is from the electronic crash reporting system (E-Crash) and suppresses any personally identifiable information. Records are added to the data portal when a crash report is finalized or when amendments are made to an existing report in E-Crash. A formatted version of the crash data for crashes occurring between 2015 through February 2023 are available via this link to a zipped shapefile (220MB) of crashes between 2015-2022 on the course GitHub repository. The data can be extracted and used in ArcGIS, QGIS, R or other programs that can import/display shapefiles.
Code
traffic_crashes <-read_csv("https://data.cityofchicago.org/api/views/85ca-t3if/rows.csv?accessType=DOWNLOAD")traffic_crashes_formatted <- traffic_crashes %>%filter(CRASH_TYPE =="INJURY AND / OR TOW DUE TO CRASH") %>%mutate(date_time =as.POSIXct(CRASH_DATE, format ="%m/%d/%Y %H:%M:%S"),date =format(date_time, "%m/%d/%Y"),yearmonth =format(date_time, "%Y-%m"),year =format(date_time, "%Y")) %>%drop_na(LONGITUDE)coordinates(traffic_crashes_formatted) =~LONGITUDE+LATITUDEtraffic_crashes_sf <- traffic_crashes_formatted %>%st_as_sf() %>%st_set_crs(4326) %>%st_transform(3435)# import city of chicago boundarychicago_ca_boundary <-st_read("https://data.cityofchicago.org/api/geospatial/cauq-8yn6?method=export&format=GeoJSON") %>%st_transform(3435) %>%select(community)traffic_crashes_chicago_sf <- traffic_crashes_sf %>%st_join(chicago_ca_boundary) %>%drop_na(community)traffic_crashes_chicago_sub_sf <- traffic_crashes_chicago_sf %>%select(community,speed_limit = POSTED_SPEED_LIMIT,weather = WEATHER_CONDITION,lighting = LIGHTING_CONDITION,roadway_type = TRAFFICWAY_TYPE,lanes = LANE_CNT,align = ALIGNMENT,surface_cond = ROADWAY_SURFACE_COND,intersect = INTERSECTION_RELATED_I,damage = DAMAGE,street = STREET_NO,street_dir = STREET_DIRECTION,street_name = STREET_NAME,inj_total = INJURIES_TOTAL,inf_fatal = INJURIES_FATAL,day = CRASH_DAY_OF_WEEK,hour = CRASH_HOUR,month = CRASH_MONTH, year, date, yearmonth)# st_write(traffic_crashes_chicago_sub_sf, "layers/traffic_crashes_chicago_sub.shp", append=FALSE)
Percent of Workers Age 16 and Older by Means of Transportation to Work by Chicago Community Area, 2021
Design Guides, Planning and Reporting Resources
NACTO Design Guides
The National Association of City Transportation Officials (NACTO) has numerous design guides that may be useful for your corridor (and/or intersection) proposals as well as the configurations of your shared use mobility hub.
StreetMix Application
The Urban Mobility Alliance and Code for America created an open source and freely available Streetmix, a tool for designing and reconfiguring street infrastructure (e.g., lanes, sidewalks, bus stops) in numerous ways and scenarios.
The Shared Use Mobility Center is a leader in advocating for innovative forms of transportation planning. They make available shared use mobility research and related policies across the country. Access these resources via the organization’s publications and mobility learning center web pages.
Group Presentation and Report Guidance
Each group is asked to create a presentation (lasting about 10-15 minutes, delivered Wednesday, 3/8 during regular class time) and a report (8 double-spaced pages due by Friday, 3/17). At the very least, the presentation should include: (1) a title slide with names of group members; (2) introduction to the group’s study area, including a reference map and some background concerning its current transportation amenities and limitations; and (3) summary of resources that are being used/considered to inform sustainable urban transportation proposal and recommendations. Of course, if the group is far enough along, they could present details of the proposal/recommendations. One group member should submit the presentation and report (with names of ALL group members) to the respective submission folder on D2L.
Measuring Access (to hospitals from Cook County places, community areas)
Code
#activate packageslibrary(dplyr) # data wrangling with pipe syntaxlibrary(httr) # tools for Working with URLs and HTTPlibrary(jsonlite) # managing JSON data library(tidyverse) # data wranglinglibrary(sf) # simple features geometry datalibrary(nngeo) # perform nearest neighbor analysislibrary(scales) # used for rescaling datalibrary(data.table) # data wranglinglibrary(ggplot2) # needed for bivariate mappinglibrary(sp) # spatial data packagelibrary(units) # manage measurement units# download hospitals within Cook Countyhospitals_cook_county <-st_read("https://services1.arcgis.com/Hp6G80Pky0om7QvQ/arcgis/rest/services/Hospital/FeatureServer/0/query?outFields=*&where=1%3D1&f=geojson") %>%filter(COUNTYFIPS=="17031") %>%select(-c(VAL_DATE,SOURCEDATE), NAME, TYPE) %>%st_transform(3435)# create novel Cook County geography# import City of Chicago community areas (N=77) GEOJSON and transform to local projection for spatial analysis (epsg:3435)community_areas <-st_read("https://metopio.blob.core.windows.net/lalage/atlas/3/shapes/communityareas.topo.json", quiet=TRUE) %>%st_as_sf() %>%st_set_crs(4326) %>%st_transform(3435) %>%rename(geoid = id) %>%mutate(geoid=str_replace(geoid,"1714000-",""),location ="Chicago, IL",type ="community area")# import places within suburban Cook County (N=125) and transform to local projection for spatial analysis (epsg:3435)places_cook_county <-st_read("https://metopio.blob.core.windows.net/lalage/atlas/6/shapes/SCC-place.topo.json", quiet=TRUE) %>%st_as_sf() %>%st_set_crs(4326) %>%st_transform(3435) %>%rename(geoid = id) %>%mutate(sqmi =as.numeric(st_area(geometry)) *0.0000003861,location ="suburban Cook County",type ="municipality") %>%filter(sqmi >=4) %>%select(-sqmi)# create a novel geography in Cook County which combines both municipalities in suburban Cook County and communities areas in Chicagonovel_geo_cook <- places_cook_county %>%bind_rows(community_areas) %>%st_as_sf() %>%st_make_valid()# --container based approach--# count hospitals per area unitnovel_geo_cook_hospitals <- novel_geo_cook %>%st_join(hospitals_cook_county %>%select(NAME, TYPE)) %>%st_drop_geometry() %>%mutate(value =if_else(!is.na(NAME),1,0)) %>%group_by(geoid) %>%summarise(count =sum(value))# join counts with geographynovel_geo_cook_hospitals_geo <- novel_geo_cook %>%left_join(novel_geo_cook_hospitals, by="geoid") %>%st_as_sf()# plot map by countplot(novel_geo_cook_hospitals_geo['count'])# create histogram frequencies by countggplot(novel_geo_cook_hospitals, aes(x=count)) +geom_histogram() +xlab("count") +ylab("frequency")# -- distance-based approach --# create origin-destination (od) matrixod_matrix_distance <-st_distance(novel_geo_cook, hospitals_cook_county) %>%as.data.frame() %>%drop_units() %>%mutate_if(is.numeric, ~ . *0.000621371) %>%bind_cols(novel_geo_cook_hospitals_geo %>%st_drop_geometry() %>%select(geoid)) %>%select(geoid,V1:V72)# summarize origin-destination matrixod_matrix_distance_sum <- od_matrix_distance %>%rowwise() %>%mutate(min =min(across(V1:V72)),max =max(across(V1:V72)),mean =mean(V1:V72),n_1mi =sum(across(V1:V72) <=1),n_5mi =sum(across(V1:V72) <=5),n_7mi =sum(across(V1:V72) <=7.5),n_10mi =sum(across(V1:V72) <=10)) %>%select(geoid, min:n_10mi)# join origin-destination matrix with cook county geographiesnovel_geo_cook_hospitals_od_geo <- novel_geo_cook_hospitals_geo %>%left_join(od_matrix_distance_sum, by="geoid") %>%st_as_sf()# plot map by countplot(novel_geo_cook_hospitals_od_geo['min'])# create histogram frequencies by countggplot(od_matrix_distance_sum, aes(x=n_10mi)) +geom_histogram() +xlab("count") +ylab("frequency")
Group Project Peer Review
Please use this survey link to provide an assessment of both your work and the work of each team member concerning their contribution to the group project.
Source Code
---title: "GEO 3/430 Group Project Resources"subtitle: "Active corridor and shared use mobility hub supporting information"author: C. Scott Smith, PhD AICP (Instructor)email: c.scott.smith@depaul.eduformat: html: warning: false code-tools: true code-fold: true theme: flatly toc: true toc-depth: 3 toc-location: left reference-location: document fontsize: 0.9em interlinespace: -0.75em embed-resources: truedate: 2024-01-20bibliography: ../references.bibeditor_options: chunk_output_type: console---```{r}#| include: falselibrary(dplyr)library(tidyverse)library(data.table)library(DT)library(keyring)library(sf)library(sp)library(leaflet) # used for creating interactive mapslibrary(plotly)library(oceanis)setwd("C:/Users/juste/OneDrive - DePaul University/gitrepos/pedagogy/GEO330_2024_WinterQuarter/exercises/Group_Project")load(file ="data/Group_Exercise.RData")```# PurposeThis document provides links to data and documents that may help inform course group projects. # Traffic VolumesAnnual Average Daily Traffic (AADT) is a measure of the amount of traffic on a given road or highway. It is calculated by taking the total number of vehicles that travel along a road or highway during a 24-hour period, and then dividing that number by 365 to get an average. AADT can be used to measure the amount of traffic on a road or highway over a long period of time and is a key indicator of road usage. There are a number of sources of traffic count information available to the public. Many are listed on the Chicago Metropolitan Association of Governments [traffic data web page](https://www.cmap.illinois.gov/data/transportation/traffic). Perhaps most useful for your group projects is the [IDOT Statewide interactive Annual Average Daily Traffic Map](http://www.gettingaroundillinois.com/gai.htm?mt=aadt). Enter a location or zoom in on map to see AADTs for most roadways in the state.# Traffic CrashesThe Chicago Data Portal has extensive and [up-to-date crash data](https://data.cityofchicago.org/Transportation/Traffic-Crashes-Crashes/85ca-t3if) showing information about each traffic crash on city streets within the City of Chicago limits and under the jurisdiction of Chicago Police Department (CPD). According to the data portal, data are shown as is from the electronic crash reporting system (E-Crash) and suppresses any personally identifiable information. Records are added to the data portal when a crash report is finalized or when amendments are made to an existing report in E-Crash. A formatted version of the crash data for crashes occurring between 2015 through February 2023 are available via [this link to a zipped shapefile (220MB) of crashes between 2015-2022](https://github.com/justenvirons/pedagogy/raw/main/GEO330_2023_WinterQuarter/exercises/Group_Project/layers/traffic_crashes_chicago_sub.zip) on the course GitHub repository. The data can be extracted and used in ArcGIS, QGIS, R or other programs that can import/display shapefiles.```{r}#| eval: falsetraffic_crashes <-read_csv("https://data.cityofchicago.org/api/views/85ca-t3if/rows.csv?accessType=DOWNLOAD")traffic_crashes_formatted <- traffic_crashes %>%filter(CRASH_TYPE =="INJURY AND / OR TOW DUE TO CRASH") %>%mutate(date_time =as.POSIXct(CRASH_DATE, format ="%m/%d/%Y %H:%M:%S"),date =format(date_time, "%m/%d/%Y"),yearmonth =format(date_time, "%Y-%m"),year =format(date_time, "%Y")) %>%drop_na(LONGITUDE)coordinates(traffic_crashes_formatted) =~LONGITUDE+LATITUDEtraffic_crashes_sf <- traffic_crashes_formatted %>%st_as_sf() %>%st_set_crs(4326) %>%st_transform(3435)# import city of chicago boundarychicago_ca_boundary <-st_read("https://data.cityofchicago.org/api/geospatial/cauq-8yn6?method=export&format=GeoJSON") %>%st_transform(3435) %>%select(community)traffic_crashes_chicago_sf <- traffic_crashes_sf %>%st_join(chicago_ca_boundary) %>%drop_na(community)traffic_crashes_chicago_sub_sf <- traffic_crashes_chicago_sf %>%select(community,speed_limit = POSTED_SPEED_LIMIT,weather = WEATHER_CONDITION,lighting = LIGHTING_CONDITION,roadway_type = TRAFFICWAY_TYPE,lanes = LANE_CNT,align = ALIGNMENT,surface_cond = ROADWAY_SURFACE_COND,intersect = INTERSECTION_RELATED_I,damage = DAMAGE,street = STREET_NO,street_dir = STREET_DIRECTION,street_name = STREET_NAME,inj_total = INJURIES_TOTAL,inf_fatal = INJURIES_FATAL,day = CRASH_DAY_OF_WEEK,hour = CRASH_HOUR,month = CRASH_MONTH, year, date, yearmonth)# st_write(traffic_crashes_chicago_sub_sf, "layers/traffic_crashes_chicago_sub.shp", append=FALSE)```# Commute Mode Share by Community Area, 2010-2020```{r}#| fig-cap: Percent of Workers Age 16 and Older by Means of Transportation to Work by Chicago Community Area, 2021#| fig-subcap: #| - "Percent of workers who <em>walk</em> to work [(static map)](maps/walk_map.png)"#| - "Percent of workers who <em>bicycle</em> to work [(static map)](maps/bicycle_map.png)"#| - "Percent of workers who use active transportation (bike+walk)</em> to work [(static map)](maps/active_map.png)"#| - "Percent of workers who <em>take public transit</em> to work [(static map)](maps/transit_map.png)"# join commute share attributes with community area geometriesmodeshare_comty_area_2021_geom <- modeshare_comty_area_2010_2021 %>%filter(year==2021) %>%mutate(pct_active = pct_bicycle+pct_walk) %>%left_join(chicago_comty_areas %>%select(-c(comarea_name)), by="comarea_id") %>%st_as_sf() %>%st_transform(crs=4326)comty_area_labels <-sprintf("Community Area: <strong>%s</strong><br/> Population: <strong>%s</strong><br/> Workers (16 and older): <strong>%s</strong><br/> Walk: %0.1f%%<br/> Bicycle: %0.1f%%<br/> Active: %0.1f%%<br/> Transit: %0.1f%%<br/> Drove Alone: %0.1f%%<br/> Home: %0.1f%%", modeshare_comty_area_2021_geom$comarea_name, modeshare_comty_area_2021_geom$total_population, modeshare_comty_area_2021_geom$workers16pl, modeshare_comty_area_2021_geom$pct_walk, modeshare_comty_area_2021_geom$pct_bicycle, modeshare_comty_area_2021_geom$pct_active, modeshare_comty_area_2021_geom$pct_transit, modeshare_comty_area_2021_geom$pct_drovealone, modeshare_comty_area_2021_geom$pct_fromhome) %>%lapply(htmltools::HTML)# walk mode sharebins_walk <-c(0,1.6,2.7,4.5,31.6)pal_walk <-colorBin("Blues", domain = modeshare_comty_area_2021_geom$pct_walk, bins = bins_walk)walk_map <-leaflet(modeshare_comty_area_2021_geom) %>%addProviderTiles(providers$CartoDB.Positron) %>%addPolygons(fillColor =~pal_walk(pct_walk),weight =0.5,opacity =1,color ="white",dashArray ="3",fillOpacity =0.7,label = comty_area_labels) %>%addLegend("bottomleft", pal = pal_walk, values =~pct_walk,title ="Walk Mode Share",labFormat =labelFormat(suffix ="%"),opacity =1 )# bicycle mode sharebins_bicycle <-c(0,0.1,0.4,1.5,6.5)pal_bicycle <-colorBin("Reds", domain = modeshare_comty_area_2021_geom$pct_bicycle, bins = bins_bicycle)bicycle_map <-leaflet(modeshare_comty_area_2021_geom) %>%addProviderTiles(providers$CartoDB.Positron) %>%addPolygons(fillColor =~pal_bicycle(pct_bicycle),weight =0.5,opacity =1,color ="white",dashArray ="3",fillOpacity =0.7,label = comty_area_labels) %>%addLegend("bottomleft", pal = pal_bicycle, values =~pct_bicycle,title ="Bicycle Mode Share",labFormat =labelFormat(suffix ="%"),opacity =1 )# active mode sharebins_active <-c(0,1.8,2.9,6.1,32.7)pal_active <-colorBin("Purples", domain = modeshare_comty_area_2021_geom$pct_active, bins = bins_active)active_map <-leaflet(modeshare_comty_area_2021_geom) %>%addProviderTiles(providers$CartoDB.Positron) %>%addPolygons(fillColor =~pal_active(pct_active),weight =0.5,opacity =1,color ="white",dashArray ="3",fillOpacity =0.7,label = comty_area_labels) %>%addLegend("bottomleft", pal = pal_active, values =~pct_active,title ="Active Mode Share",labFormat =labelFormat(suffix ="%"),opacity =1 )# transit mode sharebins_transit <-c(4.8,15.0,21.2,27.2,40.6)pal_transit <-colorBin("Greens", domain = modeshare_comty_area_2021_geom$pct_transit, bins = bins_transit)transit_map <-leaflet(modeshare_comty_area_2021_geom) %>%addProviderTiles(providers$CartoDB.Positron) %>%addPolygons(fillColor =~pal_transit(pct_transit),weight =0.5,opacity =1,color ="white",dashArray ="3",fillOpacity =0.7,label = comty_area_labels) %>%addLegend("bottomleft", pal = pal_transit, values =~pct_transit,title ="Transit Mode Share",labFormat =labelFormat(suffix ="%"),opacity =1 )walk_mapbicycle_mapactive_maptransit_map# Export maps to png using oceanis package# export_png(walk_map, chemin = "maps", nomFichier = "walk_map")# export_png(bicycle_map, chemin = "maps", nomFichier = "bicycle_map")# export_png(transit_map, chemin = "maps", nomFichier = "transit_map")# export_png(active_map, chemin = "maps", nomFichier = "active_map")```# Design Guides, Planning and Reporting Resources## NACTO Design GuidesThe National Association of City Transportation Officials (NACTO) has numerous [design guides](https://nacto.org/publications/design-guides/) that may be useful for your corridor (and/or intersection) proposals as well as the configurations of your shared use mobility hub.## StreetMix ApplicationThe Urban Mobility Alliance and Code for America created an open source and freely available [Streetmix](https://streetmix.net), a tool for designing and reconfiguring street infrastructure (e.g., lanes, sidewalks, bus stops) in numerous ways and scenarios.## City of Chicago Transportation Plans* [CDOT Bike Network](https://www.chicago.gov/city/en/depts/cdot/provdrs/bike/svcs/cdot-bike-network.html)* [Chicago Streets for Cycling Plan](https://chicagocompletestreets.org/portfolio/chicago-streets-for-cycling-plan-2020/)## Shared Use Mobility CenterThe Shared Use Mobility Center is a leader in advocating for innovative forms of transportation planning. They make available shared use mobility research and related policies across the country. Access these resources via the organization's [publications](https://sharedusemobilitycenter.org/publications/) and [mobility learning center](https://learn.sharedusemobilitycenter.org/) web pages.# Group Presentation and Report GuidanceEach group is asked to create a presentation (lasting about 10-15 minutes, delivered Wednesday, 3/8 during regular class time) and a report (8 double-spaced pages due by Friday, 3/17). At the very least, the presentation should include: (1) a title slide with names of group members; (2) introduction to the group's study area, including a reference map and some background concerning its current transportation amenities and limitations; and (3) summary of resources that are being used/considered to inform sustainable urban transportation proposal and recommendations. Of course, if the group is far enough along, they could present details of the proposal/recommendations. One group member should submit the presentation and report (with names of ALL group members) to the respective submission folder on D2L. # Measuring Access (to hospitals from Cook County places, community areas)```{r}#| eval: false#| echo: true#activate packageslibrary(dplyr) # data wrangling with pipe syntaxlibrary(httr) # tools for Working with URLs and HTTPlibrary(jsonlite) # managing JSON data library(tidyverse) # data wranglinglibrary(sf) # simple features geometry datalibrary(nngeo) # perform nearest neighbor analysislibrary(scales) # used for rescaling datalibrary(data.table) # data wranglinglibrary(ggplot2) # needed for bivariate mappinglibrary(sp) # spatial data packagelibrary(units) # manage measurement units# download hospitals within Cook Countyhospitals_cook_county <-st_read("https://services1.arcgis.com/Hp6G80Pky0om7QvQ/arcgis/rest/services/Hospital/FeatureServer/0/query?outFields=*&where=1%3D1&f=geojson") %>%filter(COUNTYFIPS=="17031") %>%select(-c(VAL_DATE,SOURCEDATE), NAME, TYPE) %>%st_transform(3435)# create novel Cook County geography# import City of Chicago community areas (N=77) GEOJSON and transform to local projection for spatial analysis (epsg:3435)community_areas <-st_read("https://metopio.blob.core.windows.net/lalage/atlas/3/shapes/communityareas.topo.json", quiet=TRUE) %>%st_as_sf() %>%st_set_crs(4326) %>%st_transform(3435) %>%rename(geoid = id) %>%mutate(geoid=str_replace(geoid,"1714000-",""),location ="Chicago, IL",type ="community area")# import places within suburban Cook County (N=125) and transform to local projection for spatial analysis (epsg:3435)places_cook_county <-st_read("https://metopio.blob.core.windows.net/lalage/atlas/6/shapes/SCC-place.topo.json", quiet=TRUE) %>%st_as_sf() %>%st_set_crs(4326) %>%st_transform(3435) %>%rename(geoid = id) %>%mutate(sqmi =as.numeric(st_area(geometry)) *0.0000003861,location ="suburban Cook County",type ="municipality") %>%filter(sqmi >=4) %>%select(-sqmi)# create a novel geography in Cook County which combines both municipalities in suburban Cook County and communities areas in Chicagonovel_geo_cook <- places_cook_county %>%bind_rows(community_areas) %>%st_as_sf() %>%st_make_valid()# --container based approach--# count hospitals per area unitnovel_geo_cook_hospitals <- novel_geo_cook %>%st_join(hospitals_cook_county %>%select(NAME, TYPE)) %>%st_drop_geometry() %>%mutate(value =if_else(!is.na(NAME),1,0)) %>%group_by(geoid) %>%summarise(count =sum(value))# join counts with geographynovel_geo_cook_hospitals_geo <- novel_geo_cook %>%left_join(novel_geo_cook_hospitals, by="geoid") %>%st_as_sf()# plot map by countplot(novel_geo_cook_hospitals_geo['count'])# create histogram frequencies by countggplot(novel_geo_cook_hospitals, aes(x=count)) +geom_histogram() +xlab("count") +ylab("frequency")# -- distance-based approach --# create origin-destination (od) matrixod_matrix_distance <-st_distance(novel_geo_cook, hospitals_cook_county) %>%as.data.frame() %>%drop_units() %>%mutate_if(is.numeric, ~ . *0.000621371) %>%bind_cols(novel_geo_cook_hospitals_geo %>%st_drop_geometry() %>%select(geoid)) %>%select(geoid,V1:V72)# summarize origin-destination matrixod_matrix_distance_sum <- od_matrix_distance %>%rowwise() %>%mutate(min =min(across(V1:V72)),max =max(across(V1:V72)),mean =mean(V1:V72),n_1mi =sum(across(V1:V72) <=1),n_5mi =sum(across(V1:V72) <=5),n_7mi =sum(across(V1:V72) <=7.5),n_10mi =sum(across(V1:V72) <=10)) %>%select(geoid, min:n_10mi)# join origin-destination matrix with cook county geographiesnovel_geo_cook_hospitals_od_geo <- novel_geo_cook_hospitals_geo %>%left_join(od_matrix_distance_sum, by="geoid") %>%st_as_sf()# plot map by countplot(novel_geo_cook_hospitals_od_geo['min'])# create histogram frequencies by countggplot(od_matrix_distance_sum, aes(x=n_10mi)) +geom_histogram() +xlab("count") +ylab("frequency")```# Group Project Peer ReviewPlease use [this survey link](https://depaul.qualtrics.com/jfe/form/SV_ers5fsKdyqRbFFc) to provide an assessment of both your work and the work of each team member concerning their contribution to the group project.